有在設計TIPTOP的小伙伴,今天要介紹一個偷懶工具的演算法原理給大家(公司電腦關機抄不到啊)
先從一個詭異的事件說起,我們公司招收進來的新人,號稱有十幾年經驗,但是來公司第一個月,
竟然連compile 4fd的方式都不知道。
(對照一天到晚把十幾年掛在嘴上,不知道怎樣COMIPLE還真的挺好笑!哈哈)
(就是改個畫面檔屬性,因為不知道要r.gf 搞了一禮拜,
你不懂問我,我教你(反了反了),你老兄又不聽)
後來想想,該公司肯定有"不是他"的高手改寫過COMPILE程式,而對牠暗藏一手。
說明一下:
程式檔的COMPILE是由 r.c2 程式名稱 (4GL檔沒有4GL的那部份)
r.l2 功能代碼 所組成的
舉例來說好了 假如你今天修改完 saapt110.4gl 了
那你就要 r.c2 saapt110
r.l2 aapt110
r.l2 aapt120
r.l2 aapt150
r.l2 aapt160
r.l2 aapt210 ...等(很多支10幾支勒)
至於要link哪些程式,上大班課好像都沒有講到這一段...?! 不曉得是不是我記憶有問題...
(不曉得為何,我依稀記得那時候是說如果遇到這種副程式就要REBUILD(現在已經知道是錯的))
後來,經過一番詢問鼎新顧問之後,才知道可以透過p_link查詢。
1. 查詢單身有saapt110的資料
2. 逐筆進入單身再出來就會問你要不要LINK
知道有p_link可以使用之後,我就著手開發p_batchlink
該程式可以輸入一個參數 程式會自動查詢單身中有該參數的所有程式代號,並批次做LINK。
然後你就可以改寫r.c2程式了
該程式放置於 $TOP/DS4GL/bin底下
找到 r.c2 備份一個起來
修改 r.c2 執行完畢之後 執行 FGLRUN p_batchlink $1
即可完成自動COMPILE LINK。
以後當你執行 r.c2 saapt110 時,你就會看到他全自動的在LINK。
以saapt110來說,這份清單總是很長。
(誰要一筆一筆在那邊LINK啊)
注意!
寫p_batchlink時針對SUB、QRY、LIB底下的程式要特別處理喔。
至於畫面檔的自動化COMPILE機制
正常來說畫面檔上傳完畢之後你會需要執行
r.f2 畫面檔名稱
r.gf 畫面檔名稱 0 c y n (<--這一部就是號稱十幾年經驗的白癡不知道的步驟)
我們來拆解吧
r.f2 是產生42f的程式
而r.gf就比較有趣了,他會呼叫p_preview這隻程式進行 欄位定義的回寫動作
回寫至p_per檔中 舉凡要不要鎖住欄位,以及是否為必填,這些資訊都是在
p_preview當中完成的,這東西需要的4個參數 0 c y n
這當中只有第二個參數比較有困難
我改寫了p_preview 讓第二參數可以接受a 當它被填上a:auto 系統會自動找看看有沒有
客製的p_per檔,若有就執行c 的走法 若找不到就執行p 的走法。
修改完之後只要在r.f2 的程式後面 增加一小段 r.gf $1 0 a y n 即可達成自動化執行r.gf
備註:
已經跟原廠講師確認過,截至5.3版都還是要兩段式r.c2、r.l2 及 r.f2、r.gf,
如果你的前公司不用這麼麻煩,那你應該感謝你的前輩。
有為大家留下這樣的工具。